/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Codigo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author kyerte
 */
public class ConsultaUsuarios {

    private Connection conexion = null;
    private PreparedStatement consultarUsuarios = null;
    private PreparedStatement insertarUsuario = null;
    private PreparedStatement actualizarUsuario = null;
    private PreparedStatement eliminarUsuario = null;
    private PreparedStatement obtenerIdUsuario = null;

    ConsultaUsuarios() {
        
        conexion = FrmPrincipal.conexion;
        
        try {
            consultarUsuarios = conexion.prepareStatement("SELECT * FROM Usuarios");
            insertarUsuario = conexion.prepareStatement("INSERT INTO Usuarios(Usuario,"
                    + "Password, Tipo)VALUES(?, ?, ?)");
            actualizarUsuario = conexion.prepareStatement("UPDATE Usuarios SET "
                    + "Usuario=?, Password=?, Tipo=? WHERE idUsuarios=?");
            eliminarUsuario = conexion.prepareStatement("DELETE FROM Usuarios WHERE"
                    + "idUsuarios=?");
            obtenerIdUsuario = conexion.prepareStatement("SELECT idUsuarios WHERE "
                    + "Usuario");
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }
    }

    public List<Usuario> consultarUsuarios() {

        ResultSet conjuntoResultados = null;
        List<Usuario> resultadosUsuarios = null;

        try {

            conjuntoResultados = consultarUsuarios.executeQuery();
            resultadosUsuarios = new ArrayList<Usuario>();

            while (conjuntoResultados.next()) {

                resultadosUsuarios.add(new Usuario(
                        conjuntoResultados.getInt("idUsuarios"),
                        conjuntoResultados.getString("Usuario"),
                        conjuntoResultados.getString("Password"),
                        conjuntoResultados.getBoolean("Tipo")));

            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            try {
                conjuntoResultados.close();
            } catch (SQLException ex) {
                ex.printStackTrace();
                close();
            }
        }

        return resultadosUsuarios;
    }

    public int insertarNuevoUsuario(String user, String pass, boolean admin) {
        int resultado = 0;

        try {

            insertarUsuario.setString(1, user);
            insertarUsuario.setString(2, pass);
            insertarUsuario.setBoolean(3, admin);

            resultado = insertarUsuario.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public int actualizarUsuario(String user, String pass, boolean admin, int id) {

        int resultado = 0;

        try {

            actualizarUsuario.setString(1, user);
            actualizarUsuario.setString(2, pass);
            actualizarUsuario.setBoolean(3, admin);
            actualizarUsuario.setInt(4, id);

            resultado = actualizarUsuario.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    public int eliminarUsuario(int id) {

        int resultado = 0;

        try {

            eliminarUsuario.setInt(1, id);
            resultado = eliminarUsuario.executeUpdate();

        } catch (SQLException ex) {
            ex.printStackTrace();
            close();
        }

        return resultado;
    }

    private void close() {
        try {
            conexion.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
